package com.idanchuang.user.count.service.api.request.command;

import javax.validation.constraints.NotNull;
import java.util.UUID;

/**
 * @author Richard_yyf
 * @version 1.0 2021/7/6
 */
public class BaseUpdateCommand {


    /**
     * 业务场景标识
     * 服务接入时，由计数服务根据计数业务场景分配
     * 要在计数服务注册过的bizCode，否则调用会失败
     */
    @NotNull
    private String bizCode;

    /**
     * 更新计数请求的唯一ID
     * 考虑到client调用计数服务的API时，可能出现通信类的失败情况，
     * 业务服务可以用同一个Command的对象重新发起请求，在计数服务server端可以根据此uuid做计数请求的幂等
     */
    private String uid = UUID.randomUUID().toString().replace("-", "");

    /**
     * 预留用处字段
     * 在计数校准和业务计数方案初始化迁移用
     * 会默认生成，同时支持业务方根据实际场景覆盖使用
     */
    private long timeStamp = System.currentTimeMillis();

    public String getBizCode() {
        return bizCode;
    }

    public void setBizCode(String bizCode) {
        this.bizCode = bizCode;
    }

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public long getTimeStamp() {
        return timeStamp;
    }

    public void setTimeStamp(long timeStamp) {
        this.timeStamp = timeStamp;
    }

    @Override
    public String toString() {
        return "BaseUpdateCommand{" +
                "bizCode='" + bizCode + '\'' +
                ", uid='" + uid + '\'' +
                ", timeStamp=" + timeStamp +
                '}';
    }
}
